برنامه نويسي به زبان اسمبلي براي كامپيوترهاي شخصي
حافظه داخلي
وحافظه فقط (RAM) دو نوع حافظه داخليروي كامپيوتر عبارتند از:حافظه با دستيابي تصادفي
شماره گذاري مي شوند به طوري كه OO بايت هاي حافظه به ترتيب با شروع از (Ram) خواني
هرمكاني داراي يك آدرس منحصر به فردي مي باشد
شامل يك تراشه حافظه بخوصوصي است كه فقط مي تواند خوانده شود. چون دستورالعمل :ROM
هاودادها به طور دائمي در داخل تراشه هاجايگزاري شده اند نمي توانندتغيير داده شوند.سيستم
68 شروع شده ودستگاههاي ورودي / خروجي نظير K از أدرس (BIOS) ورودي – خروجي پايه
960 شروع مي K كنترل كننده ديسك سخت را مديريت مي كند. حافظه فقط خواني كه از
شودعمليات اساسي كامپيوترنظير امتحان كردن خود كامپيوتر در موقعروشن شدن ،الگوهاي نقطه
اي گرافيكي وبار كننده خود ديسك را كنترل مي كند.وقتي كه كامپيوتر را روشن مي كنيد،حافظه
RAM كنترلهاي گوناگوني را انجام داده واطلاعات مخصوص سيستم را از ديسك به حافظه ROM
بار گذاري مي كند.
ارتباط دارد كه بهتر بود درحافظه خواندن – نوشتن RAM يك برنامه نويس اصولا با حافظه : RAM
به عنوان يك برگه كاري براي ذخيره سازي موقت واجراي برنامه RAM نام گذاري مي شد.حافظه
محتوي)از بين مي رود بايد از ) RAM ها بكار مي رود چون در موقع خاموش شدن كامپيوتر حافظه
حافظه خارجي براي نگهداري برنامه ها و داده ها استفاده كنيم.وقتي كه كامپيوتر را روشن مي كنيد،
بار گذاري مي كند. سپس مي توانيد RAM بخشي از سيستم عامل ر ابه داخل ROM روال راه اندازي
را از آن درخواست كنيد. RAM انجام عملياتي نظير بار گذاري يك برنامه از ديسك به داخل
آدرس دهي داده ها در حافظه
بسته به مدل،پردازنده مي تواند در هر زمان به يك يا چند بايت از حافظه دسترسي داشته باشد عدد
0526 است نمايش آن به دو بايت يا H دهدهي 1315 را در نظر بگيريد نمايش هگزا دسيمال آن
يك كلمه از حافظه نياز دارد.آن شامل با ارزش ترين بايت يعني 05 و كم ارزش ترين بايت يعني
29 مي باشد.
سيستم داده را در حافظه به ترتيب معكوس ذخيره مي كند:بايت داراي كم ارزشتر در آدرس پايين
ترو بايت داراي ارزش بيشتر در آدرس بالاتر حافظه ذخيره مي شود.
پردازنده انتظار دارد كه داده هاي عددي در حافظه به ترتيب معكوس قرار گيرند و داده ها را مطابق
با آن پردازش مي كند .
سگمنت ها و آدرس دهي.
يك سگمنت ناحيه خاصي است كه در يك برنامه تعريف شده واز مرز پاراگراف شروع مي شود
يعني از مكاني كه همواره بر 16 يا 10 شانزده شانزدهي بخش پذير است. هر چندكه يك سمگنت
64 باشد ولي نقطه به k مي تواند در هر جايي از حافظه قرار بگيرد و در حالت حقيقي مي تواند تا
اندازه اي فضا لازم دارد كه برنامه براي اجرا شدن به آن نياز دارد.
ممكن است هر تعداد سگمنت وجود داشته باشد ، براي آدرس دهي سگمنت مورد نظر فقط لازم
است كه آدرس مو جود در يك ثبات سگمنت مناسبي را تغيير داد. 3 سگمنت اصلي عبارتند از
سگمنت هاي داده ، پشته وكد
سگمنت كد
سگمنت كد شامل دستورالعمل هاي ماشين است اجرا مي شوند. معمولا اولين دستورالعمل اجرايي
در شروعاين سگمنت قرار دارد. وسيستم عامل به آن مكان پيوند داده مي شود تا اجراي برنامه را
سگمنت كد را آدرس دهي مي ، (cs) شروع كند همانطور كه از نام آن پيداست ، ثبات سگمنت كد
64 نياز داشته باشد ، برنامه ممكن است نياز داشته باشد كه بيش k كند.اگر ناحيه كد شما به بيش از
از يك سگمنت كد را تعريف كند.
سگمنت داده ها
سگمنت داده ها شامل داده ها ، ثابت ها و نواحي كاري يك برنامه مي باشد ثبات سگمنت داده ها
64 نياز داشته باشد در k سگمنت داده ها را آدرس دهي مي كند . "اگر ناحيه داده به بيش از (DS)
برنامه مي توانيد بيش از يك سگمنت داده را تعريف كنيد ".
سگمنت پشتر
به زبان ساده ، پشتر حاوي هر گونه داده و آدرسي است كه براي ذخيره موقت و يا جهت استفاده
سگمنت پشتر را آدرس (ss) توسط زير روال هاي فراخواني شده لازم است . ثبات سگمنت پشته
دهي مي كند.
حدود يك سگمنت
يك ثبات سگمنت حاوي آدرس شروع يك سگمنت مي باشد همانطور كه قبلا ذكر شد يك
سگمنت بر روي مرز پارا گراف شروع مي شود كه آدرسي است كه همواره بر 16 تقسيم پذير است
088 شروع مي شود در نظر بگيريد چون دراين مورد EOH يك سگمنت داده را از مكان حافظه
وتمام موارد ديگرراستي ترين رقم شانزده شانزدهي برابر صفر است طراحان كامپيوتر تشخيص
038E 038 به صورت EOH دادند كه ذخيره كردن رقم صفر درثبات سگمنت لازم نيست . لذا
ذخيره مي شود كه صفر سمت راست آن بديهي است. در اين كتاب هر جا لازم باشد از كروشه ها
038 استفاده خواهد شد. [ براي اشاره به سمت راست ترين صفر ما نند [ 0
آفست هاي سگمنت
در داخل يك برنامه مكان هاي حافظه نسبت به آدرس شروع سگمنت بيان مي شوند فاصله بايتي
از آدرس سگمنت تا يك مكان ديگر در داخل همان سگمنت به صورت يك آفست (جا بجايي)
يا از صفر تا 65,535 FFFFH 0000 تا H بيان مي شود. محدوده يك افست 2بايتي مي تواند از
باشد. بنابراين اولين بايت سگمنت كه در آفست 00 ، دومين بايت در آفست 01 الي آخر تا آفست
65535 قرار مي گيرند براي مراجعه به هر مكان حافظه در يك سگمنت ، پردازنده آدرس سگمنت
موجود در يك ثبات سگمنت را با يك مقدار افست تركيب مي كند.
حاوي آدرس DS 038 شروع مي شود در نظر بگيريد. ثبات EOH يك سگمنت داده را كه از مكان
0032 بايت در H 038 مي باشد ويك دستور العمل به مكاني با آفست E[o]H سگمنت داده ها يعني
داخل سگمنت داده ها مراجعه مي كند.
03912 مي باشد. H بنا براين مكان حافظه واقعي بايت مراجعه شده به وسيله اين دستورالعمل برابر
توجه داشته با شيد كه يك برنامه ممكن است داراي يك يا چند سگمنت باشد كه مي توانند از هر
مكاني از حافظه شروع شده, اندازه آنها متفاوت بوده و به هر ترتيبي قرار بگيرند.
ظرفيت آدرس دهي
مورد استفاده قرار مي گيرد داراي قابليت PC پردازنده هاي گوناگون انيتس كه توسط كامپيوترهاي
8086 : ثبات آنهابه احوال 16 بيت مي باشند / هاي آدرس دهي مختلفي مي باشند.آدرس دهي 8088
چون يك آدرس سگمنت برروي مرزپاراگراف (همواره بر 16 تقسيم پذير است) قرار دارد 4بيت
سمت راست آدرس آن صفر مي باشندهمانطور كه قبلا بحث شد يك آدرس سگمنت در ثبات
برابر nnnn[o] سگمنت ذخيره شده و پردازنده 4 بيت سمت راست را به صورت شانزده شانزدهي
امكان آدرس دهي تا 1048560 بايت را فراهم مي كند،اگر FFFF[o]H، در نظر مي گيريد. حال o
شانزده شانزدهي را به صورت 1111 دو رويي نوشته و 4بيتسمت راست را F مطمئن نيستيد،هر
قرار داده وسپس مقاديربيت ها را با هم جمع كنيم. o برابر
آدرس دهي 80286 :در حالت حقيقي،پردازنده 80286 عمل آدرس دهي را مثل 8086 انجام مي
FFFFF[o] دهد در حالت محافظت شده،پردازنده از 24 بيت براي آدرس دهي استفاده مي كند، لذا
امكان آدرس دهي تا 16 ميليون بايت را فراهم مي كند.ثبات هاي سگمنت به عنوان انتخابگرهاي
دستيابي به آدرس سگمنت 24 بيتي از حافظه عمل كرده واين مقدار را با يك آفست 16 بيتي جمع
مي كنند.
80386 :در حالت حقيقي اين پردازنده ها عمل آدرس دهي را خيلي شبيه / آدرس پنتيوم / 486
8086 انجام ميدهند. در حالت محافظت شده اين پردازنده ها از 48 بيتبراي آدرس دهي استفاده مي
كنند. كه امكان آدرس دهي سگمنت ها راتا 4 ميليون بايت فراهم مي كنند.ثبات هاي سگمنت
16 بيتي به عنوان انتخاب كننده دسترسي به آدرس سگمنت 32 بيتي از حافظه عمل كرده واين مقدار
را به يك آفست 32 بيتي اضافه مي كنند.
ثبات ها
ثبات هاي پر دازنده براي كنترل دستور العمل هاي اجرايي، مديريت آدرس دهي حافظه و انجام
بيت SS,DS,CS محاسبات بكار مي روند.ثباتها با استفاده ازنام آنها آدرس دهي مي شوند مانند
هاي يك ثبات به طور قراردادي از راست به چپ و با شروع ازصفر شماره گذاري مي شوند.
ثبات هاي سگمنت
يك ثبات سگمنت به طول 16 بيت مي باشد و براي آدرس دهي ناحيه اي از حافظه كه به عنوان
سگمنت جاري شناخته مي شودبكار مي رود چون يك سگمنت روي مرز پاراگراف تنظيم مي
در نظر گرفته مي شوند. o شوند، 4بيت سمت راست آدرس آن در ثبات سگمنت برابر
حاوي آدرس شروع سگمنت كه در يك برنامه است. اين آدرس سگمنت بعلاوه :CS ثبات هاي
آدرس دستورالعملي راكه براي اجرا واكشي (Ip) يك مقدار آفست درثبات اشاره گر دستورالعمل
لازم نيست. cs مي شود نشان مي دهد. برنامه نويسي معمولي مراجعه به ثبات
حاوي آدرس شروع سگمنت يك برنامه است. دستورالعمل ها براي مراجعه به داده ها از : DS ثبات
اين آدرس استفاده مي كنند.اين آدرس بعلاوه يك مقدار آفست در داخل يك دستورالعمل واقعي
مكاني در سگمنت داده ها را مشخص مي كند.
امكان پياده سازي پشته اي را كه يك برنامه براي ذخيره كردن موقت آدرس ها وداده ها : SS ثبات
استفاده مي كند . سيستم ، آدرس شروع سگمنت بعلاوه يك مقدار افست درثبات اشاره گر پشته
كلمه جاري در پشته را كه آدرس دهي مي شود، نشان مي دهد.در برنامه نويسي معمولي لازم (sp)
مراجعه كنيد. ss نيست مستقيما به ثبات
توسط برخي عمليات رشته اي براي مديريت آدرس دهي حافظه بكار مي رود در اينجا : ES ثبات
ES ثبات انديس)مرتبط است در برنامه اي كه لازم است از ) DI سگمنت اضافي)با ثبات ) ES ثبات
استفاده شود با يك آدرس سگمنت مناسبي مقدار دهي اوليه مي شود.
ثبات هاي سگمنت اضافي كمكي روي پردازنده هاي 80386 و بعد از آن. : FS,GS ثبات هاي
ثباتهاي اشاره گر
BP,SP,IP: سه ثبات اشاره گر عبارتند از
حاوي آدرس آفست دستور العمل 5 بعدي است IP ثبات 16 بيتي (IP) : ثباتاشاره گر دستورالعمل
دستورالعمل جاري را IP مرتبط مي باشد. به اين معني كه ثبات CS با ثبات IP كه اجرا خواهد شد
مراجعه نمي كنيد IP در سگمنت كه اجرايي جاري نشان مي دهد. معمولا در يك برنامه به ثبات
براي امتحان كردن يك برنامه مقدار آن را تغيير DEBV ولي مي توانيد در موقع استفاده از برنامه 6
مي EIP توسع يافته 32 بيتي به نام IP دهيد. 80386 وپردازنده هاي بعد از آن داراي يك ثبات
514 مي باشد براي پيدا كردن H حاوي IP 39 و B4[o] H حاوي CS باشند. در مثال ، ثبات
جمع مي كند. IP را با افست موجود در CS دستورالعمل اجراي بعدي ,پردازنه آدرس موجود در
آدرس IP بعلاوه آدرس افست در CS 39 آدرس سگمنت در B40H+514H=3A054H
دستورالعمل بعدي.
مرتبط بوده و به سيستم امكان ss اشاره گر ...): با ثبات ) BP اشاره گربه پشته) و ) SP ثباتهاي
دستيابي به داده هاي موجود درسگمنت پشته را مي دهند.
به طول 16 بيت بوده كه شامل يك مقدار افست مي با شد SP ثبات : (SP) ثبات اشاره گر پشته
مرتبط مي شود به كلمه بالاي پشته اشاره مي كند ss وموقعي كه اين مقدار با محتوي ثبات
مي باشند. ESP پردازنده 80389 وپس از آن داراي يك اشاره گر پشته 82 بيتي توسعه به نام ثبات
سيستم به طور اتوماتيك اين ثبات ها را مديريت مي كند.
ارجاع به پارامترهاي كه داده ها و آدرسهايي هستند BP ثبات 16 بيتي : (BP) ثبات اشاره گره مبنا
كه يك برنامه از طريق پشته ارسال مي كند،تسهيل مي كند. 80386 و پردازنده هاي بعد از آن داراي
مي باشند. EBP يك ثبات 32 بيتي توسعه به نام
ثبات هاي همه منظوره
مبناي كار سيستم هستند . در اينكه مي توانيد آنها را به DX,CX,BX,AX ثبات هاي همه منظوره
عنوان كلمه يا به صورت بايت آدرس دهي كنيد منحصر به فرد هستند. سمت چپ ترين بايت
شامل يك بخش بالايي AX قسمت بالايي وسمت راست ترين قسمت پاييني مي باشند براي مثال
مي باشد و مي توانيد به هر بخش به نام آن مراجعه كنيد. 80386 AL ويك بخش پاييني AH
وپردازنده هاي بعد از آن از تمام ثباتهاي همه منظوره بعلاوه نسخه توسعه يافته 32 بيتي آنها يعني
پشتيباني مي كنند. EDX,ECX,EBX,EAX
انتقال مي دهند: ECX,BX,AX را به ثباتهاي O دستورالعملهاي زير عدد
MOV AX,OO 2/MOV BH,OO 3/MOV ECX,OO
انباره اصلي ، در عملياتي كه مستلزم ورودي / خروجي و محاسبات زياد هستند به كار : AX ثبات
استفاده كنند كه كار آمدتري AX مي روند . براي مثال دستورالعملهاي ضرب،تقسيم و ترجمه از
توليد مي كنند.
از آنجا كه اين ثبات تنها ثبات همه منظوره ايست كه مي تواند بعنوان يك انديس براي : BX ثبات
BX توسعه آدرس دهي به كار رود به عنوان ثبات.... معروف است يكي ديگراز كار بردهاي معمول
بكار گيري آن در انجام محاسبات است.
به عنوان ثبات شمارش معروف است . ممكن است حاوي مقداري براي كنترل تعداد CX:CX ثبات
مي cx دفعات تكراري يك حلقه يا مقداري براي انتقال بيت ها به سمت چپ يا راست باشد، از
توان براي انجام محاسبات نيز استفاده كرد.
به عنوان ثبات داده معروف است.برخي از عمليات ورودي / خروجي نياز به اين DX:DX ثبات
با هم AX,DX ثبات دارند وعمليات ضرب وتقسيم كه با اعداد بزرگ سروكار دارند از زوج ثابتهاي
استفاده مي كنند.
مي توانيد از هريك از اين ثباتهاي همه منظوره براي جمع وتفريق مقادير 8 بيتي، 16 بيتي و 32 بيتي
استفاده كنيد.
ثبات هاي انديس:
براي آدرس دهي شاخص دار و استفاده در جمع وتفريق بكار مي روند. DI,SI ثباتهاي
ثبات انديس منبع 6بيتي در برخي از عمليات رشته اي مورد نياز مي باشد در اين مورد : SI ثبات
مرتبط مي باشد 80386 و پردازنده هاي پس از آن از يك ثبات توسعه يافته DS با ثبات SI ثبات
پشتيباني مي كنند. ESI 32 بيتي به نام
ثبات انديس مقصد 16 بيتي نيز براي انجام برخي عمليات رشته اي مورد نياز مي باشد. : DI ثبات
مرتبط مي باشد. ES با ثبات DI ، در اين مورد
(Flags) ثبات نشانه ها
نه بيت از 16 بيت ثبات نشانه ها در تمام پردازه هاي خانواده 8086 مشترك مي باشد وضعيت
جاري كامپيوتر ونتايج حاصلاز پردازش را نشان مي دهند بسياري از دستورالعمل هاي مقايسه اي
ها را تغيير داده و برخي از دستورالعمل ها نيز براي تعيين عمل بعدي مي flag وحسابي وضعيت
توانند اين نشانه ها را امتحان كنند.
نشانه سرريزي) سر ريزي بيت مرتبه بالايي (سمت چپ ترين)راپس از عمل حسابي نشان مي ) OF
دهد.
نشانه جهت) سمت چپ يا راست را براي انجام عمليات انتقال يا مقايسه داده هاي رشته اي ) DF
معين مي كند.
نشانه وقفه)نشان مي دهد كه تمام وقفه هاي خارجي نظير ورودي از صفحه كليدبايد مورد ) IF
پردازش قرار گرفته ويا صرف نظر شود.
نشانه تله) به پردازنده اجازه عمليات را در حالت تك مرحله اي مي دهد. برنامه هاي اشكال ) TF
را برابر يك مي كشد تا بتوانند براي امتحان كردن تاثيرات يك Flag اين DEBVG دار نظير
دستورالعمل بر روي ثبات ها و حافظه ، آن دستور العمل رابه تنهاي اجرا كنيد.
مثبت و 1 = منفي) = o) نشانه علامت) حاوي علامت نتيجه يك عمل حسابي است ) SF
يعني نتيجه غير zr=o) نشانه صفر) نتيجه يك عمل حسابي يا مقايسه اي را نشان مي دهد ) ZF
يعني نتيجه برابر صفر مي باشد) zf= صفر بوده و 1
(نشانه رقم نقلي كمكي) حاوي يك رقم نقلي خروجي از بيت شماره 3 از يك داده 8 بيتي در
يك عمل حسابي ويژه مي باشد. AF
نشانه توازن) توازن زوج يا فرد هشت بيت پايين نتيجه يك عمل ثابت را نشان مي دهد . ) PF
نشانه رقم نقلي) حاوي رقم نقلي از يك بيت بالاي(سمت چپ ترين بيت) بعد از انجام يك ) CF
عمل حسابي بوده ونيز حاوي آخرين بيت عمليات انتقال يا دوران مي باشد.
ها در ثبات نشانه ها در مكانهاي زير قرار دارند. Flag
براي انجام CF,ZF,SF,OF: هاي كه در برنامه نويسي زياد به كار مي روند عبارتند از Flag
براي تطبيق جهت عمليات رشته اي . DF عمليات مقايسه وحساب و
هاي مي باشند كه در عمليات داخلي پردازنده بكار flag 80286 وپردازنده هاي بعد از آن داراي
مي روند وبا حالت محافظت شده كامپيوتر مرتبط مي باشند .
فصل دوم
ويژگيهاي سيستم عامل
سيستم عامل دسترسي كلي ومستقل از دستگاه به منابع يك كامپيوتر براي دستگاهاي نظير صفحه
كليد صفحه نمايش وديسك گردان را در اختيار شما قرار مي دهد . استقلال از دستگاه بدين معني
است كه مجبور نيستيد كه دستگاها را به طور مشخص آدرس دهي كنيد زيرا سيستم مي تواند
را در سطح دستگاه ، بدون نياز به برنامه اي كه اين عمل را درخواست كرده است Ilo عمليات
كه در اين كتاب مورد نظر مي باشند مي توان موارد زير را نام DOS ،مديريت كند. از بين توابع
برد.
فهرستها وفايل ها را روي ديسك هاي سيستم نگاه داري مي كند .برنامه هاي Dos: مديريت فايل
فايلها را ايجاد كرده وتغيير مي دهند ولي سيستم مسئوليت مديريت مكان آنها را در روي ديسك به
عهد دارد .
ورودي /خروجي :برنامه ها داده هاي ورودي را از سيستم درخواست نموده ويا چنين داده هاي را
با استفاده از وقفه ها وارد سيستم مي كند .برنامه نويس در سطح پايين آسوده مي باشد.
بار كردن برنامه :وقتي كه يك كار بر يا يك برنامه، درخواست اجراي يك برنامه را مي كند بار
كننده برنامه مراحلي را كه شامل دسترسي به برنامه از ديسك ، قرار دادن آن در حافظه و مقدار
دهي اوليه آن براي اجرا مي با شند ، مديريت مي كند .
مديريت حافظه: وقتي كه بار كننده برنامه را از ديسك جهت اجرا به داخل حافظه بار مي كند ، يك
فضاي بسيار بزرگ در داخل حافظه به برنامه مورد نظر وداده هاي آن اختصاص مي دهد.برنامه ها
مي توانند داده هاي موجود در ناحيه حافظه خود را پردازش كرده حافظه اي را كه نياز ندارند آزاد
كرده در صورت نياز حافظه اضافي در خواست كنند .
مديريت وقفه: سيستم اجازه نصب وراه اندازي برنامه هاي مقيم ي را به كار بران مي دهد كه براي
انجام عمليات ويژه اي خود را به سيستم وقفه ضميمه مي كنند .
ساختار سيستم عامل:
CO.MMAND.Com,MSDOS.SysIO.sys: سه جزء اصلي سيستم عامل عبارتند از
عمليات مقدار دهي اوليه را در زمان راه اندازي سيستم انجام مي دهد وهمچنين شامل : IO.sys
توابع ورودي / خروجي مهم و دستگاه كردانهاي است كه پشتيباني ورودي / خروجي را در بايوس
سيستم را تكميل مي كنند. اين قسمت در روي ديسك به صورت يك فايل سيستم مخفي ذخيره
معروف است. IBMBIO.COM به نام pc-Dos شده ودر
به عنوان هسته مركزي سيستم عامل كرده و با مديريت فايل ، مديريت حافظه و : MSDOS.sys
ورودي / خروجي در ارتباط است . اين قسمت در روي ديسك به صورت فايل سيستم مخفي
معروف است . IBMDOS.COM به نام pc-Dos ذخيره شده ودر
پردازشگر فرمان يا پوسته اي است كه به عنوان رابط بين كار بر و سيستم : COMMAND.COM
عامل عمل مي كند . اين قسمت اعلان كار بر را نمايش داده ، صفحه كليد را كنترل كرده و
فرمانهاي كار بر نظير حذف يك فايل يا باز كردن يك برنامه براي اجرا را پردازش مي كند.
BooT Process فرايند راه اندازي كامپيوتر
مي شود. پردازنده يك وضعيت (Cold boot) روشن كردن كامپيوتر موجب يك راه اندازي سرد
را CS آغازين شده ، تمام مكانهاي حافظه را پاك كرده ، كنترل توازن حافظه را انجام داده وثبات
را برابر با افست صفر قرار مي دهد. بنابراين اولين IP وثبات FFFF[o] H برابر آدرس سگمنت
كه همان نقطه FFFFoH بوده برابر CS:IP دستورالعمل اجرايي در آدرسي كه متشكل از زوج
مي باشد قرار دارد. ROM ورود به بايوس در حافظه
شروع مي شود ، پورت هاي گوناگون را براي شناساي و FFFFOH روتين بايوس كه از مكان
ارزش دهي دستگاههايي كه به كامپيوتر متصل مي باشند، كنترل مي كند:
1.يك جدول بردار وقفه كه در ناحيه پايين حافظه از مكان صفر شروع شد و حاوي آدرس هاي
وقفه هايي است كه روي مي دهند.
40 بوده و بيشتر با دستگاههاي متصل به [o] 2.يك ناحيه داده هاي بايوس كه ابتداي آن در مكان
كامپيوتر در ارتباط است .
بايوس پس از آن كنترل مي كند كه آيا ديسك حاوي فايل هاي سيستم قابل دستيابي است ويا نه كه
از ديسك (boot start loader) در صورت آماده بودن آن ، به بار كننده برنامه راه اندازي سيستم
را از ديسك به داخل حافظه MSDOS,To.sys دستيابي مي كند اين برنامه فايل هاي سيستم يعني
كه حاوي كد دستگاه گردان ها و سخت افزارهاي To.sys بار كرده وكنترل را به نقطه ورودي
در حافظه جاي گرفته وسپس كنترل را به To.sys. مخصوص ديگر مي باشد منتقل مي كند
درداخل جدول DOS و بخش DOS انتقال مي دهد. اين ماژول جداول داخلي MSDOS.sys
را خوانده وفرامين داخل آن ConFIG.sys بردار وقفه ها را مقدار دهي اوليه مي كند.همچنين فايل
منتقل مي كند كه COMMAND.COM كنترل را به MSDOS.sys ، را اجرا مي كند . در نهايت
را پردازش كرده، اعلان آن را نشان داده وصفحه كليد را براي ورود AUTOEXE.BAT فايل
اطلاعات كنترل مي كند.
640 بايت به صورت نشان داده شده در شكل ديده مي شود تحت k در اينجا، حافظه متعارف تا
مديريت حافظه، بخس سيستم ممكن است در داخل حافظه فوقاني جاي گيرد.
رابطه ورودي- خروجي
براي ارائه پشتيباني از دستگاههاي مختلف ROM بايوس داراي مجموعه اي از روتين ها در حافظه
مي باشد ، بايوس دستگاههاي متصل را امتحان كرده و آنها را مقدار دهي اوليه كرده سرويس هاي
را ارائه مي كند كه براي خواندن از دستگاهها و نوشتن به آنها به كار مي روند . يكي از وظايف
برقراري ارتباط با پاياس در زماني است كه مي خوا هد از امكانات آن استفاده كند . Dos
از سيستم عامل در خواست مي كند اين درخواست را به Llo وقتي كه برنامه اي يك سرويس
بايوس منتقل مي كند كه در نتيجه به دستگاه مورد نظر دستيابي مي كند . اما برخي مواقع ، يك
برنامه از بايوس به طور مستقيم درخواست مي كند به ويژه براي سرويس ها مربوط به صفحه
و هم از Dos نمايش وصفحه كليد. درمواقعي ديگر- هر چند بندرت- يك برنامه مي تواند هم از
بايوس براي دستيابي مستقيم به يك دستگاه استفاده كند .
بار كننده برنامه سيستم
تنها از يك COM مي باشد . يك برنامه EXE,COM دو نوع از برنامه هاي قابل اجرا، برنامه هاي
به عنوان يك برنامه سود COM سگمنت تشكيل مي شود كه شامل كد ،داده ها وپشته . يك برنامه
مند كوچك و يا يك برنامه مقيم در حافظه (برنامه اي كه در حافظه نصف شده است و در موقع
از شگفتيهاي كد ، داده ها EXE اجراي سايز برنامه ها قابل دسترس است)، مي باشد.يك برنامه
وپشته جداگانه اي تشكيل مي شود واز آن براي برنامه هاي بسيار مهم استفاده مي شود وقتي كه از
را جهت اجرا از ديسك به داخل حافظه بار كند، بار كننده EXE سيستم مي خواهيد كه يك برنامه
مراحل زير را انجام مي دهد:
روي ديسك دستيابي مي كند . EXE 1.به برنامه
266 بايتي را روي مرز پاراگراف يعني مضروب صحيحي از (PSP) 2. يك پيشوند سگمنت برنامه
16 درحافظه داخلي ايجاد مي كند .
در حافظه ذخيره مي كند . PSP 3.برنامه مزبور را بلا فاصله پس از
بار مي كند . ES,DS را در ثبات هاي PSP 4.آدرس
را برابر افست اولين دستورالعمل (معمولا LP بار كرده وثبات CS 5.آدرس سگمنت كد را در ثبات
صفر) موجود در هر سگمنت كد قرار مي دهد.
قرار مي دهد . SP بار كرده و اندازه پشته را در ثبات SS 6.آدرس پشته را در ثبات
7. كنترل را جهت اجرا به برنامه منتقل مي كند كه معمولا از اولين دستورالعمل موجود در سگمنت
كد شروع مي شود.
را به درستي مقدار دهي مي كند، اما توجه كنيد SS:SP,CS:LP در نتيجه بار كننده برنامه ثباتهاي
ذخيره مي كند،هر چند كه ES وهم درثبات DS را هم در ثبات PSP كه بار كننده برنامه آدرس
برنامه شما به طور طبعيي به آدرس سگمنت داده ها ، مقدار دهي مي كند .
به يك ناحيه به نام پشته در برنامه ها نياز دارد.مقصود از پشته EXE,COM پشته تمام برنامه هاي
فراهم كردن فضاي براي ذخيره موقت آدرس ها و اقلام اطلاعاتي مي باشد .
تعريف مي كند، در حاليكه شما COM بار كننده برنامه بطور اتوماتيك ، پشته را براي يك برنامه
پشته اي را تعريف كنيد.طول هر قلم داده در پشته يك EXE بايدبه طور صريح براي يك برنامه
همانطور كه توسط بار كننده مقدار دهي شده است ، حاوي SS كلمه( دو بايت) مي باشد. ثبات
حاوي اندازه پشته كه مقداري است كه به بايت بعد SP آدرس شروع پشته مي باشد.در ابتدا،ثبات
از انتهاي پشته اشاره مي كند ، مي باشد. پشته در روش ذخيره سازي داده ها با سگمنت هاي ديگر
تفاوت دارد: ذخيره داده ها را از بالاترين مكان سگمنت شروع كرده وداده ها را در حافظه به سمت
پايين ذخيره مي كند.
POP,PUSH دستورالعمل هاي
6 را تغيير داده و براي ذخيره داده ها در روي P دو تا از دستورالعمل هاي هستند كه محتوي ثبات
را دو واحد كاهش داده و آنرا به SP اندازه PUSH پشته و بازيابي آنها بكار مي روند .دستورالعمل
مقداري را از POP كلمه پايين تر بعدي حافظه اشاره داده ويك مقداري را در آن ذخيره مي كند
را دو واحد افزايش مي دهد تا به كلمه بالايي بعدي حافظه اشاره SP پشته باز يابي كرده و مقدار
كند .
هميشه بايد اطمينان حاصل كنيد كه برنامه شما اضافه كردن اطلاعات بر روي پشته و بر داشتن آنها
از پشته را بطور هماهنگ انجام مي دهد. اگر چه اين يك نياز نسبتا ساده وواضحي است ولي يك
خطا مي تواند موجب اختلال در عملكرد يك برنامه شود همچنين پشته اي كه براي يك برنامه
تعريف مي كنيد بايد به قدر كافي بزرگ باشد تا بتواند تمام مقاديري را كه روي آن قرار مي EXE
دهيد درخود جاي دهد .
دستور العملهاي مرتبط ديگر كه مقدارهايي را به روي پشته اضافه كرده اطلاعات را از روي آن بر
popA,pushA. وضعيت فلگ ها را ذخيره وباز يابي مي كنند : popF و PushF مي دارد عبارتند از
(براي پردازنده 80286 وسپس از آن) محتوي تمام ثبات هاي همه منظوره را ذخيره و بازيابي مي
كنند.
آدرس دهي دستورالعملها و داده ها
برنامه نويس اسمبلي يك برنامه را در كد نمادي نوشته و از اسمبلر براي ترجمه آن به كد ماشين
استفاده مي كند.براي اجراي برنامه سيستم فقط كد ماشين را به داخل حافظه بار مي كند.هر
دستورالعمل شامل حداقل يك كد عمل نظير انتقال،جمع و برگشت مي باشد. بسته به عمل مورد
نظر،يك دستورالعمل ممكن است داراي يك يا چند عملوند نيز باشد كه به داده هايي كه
دستورالعمل مزبور پردازش مي كند اطلاق مي شود.
حاوي DS حاوي آدرس شروع سگمنت كد برنامه بوده وثبات cs ثبات ، EXE براي يك برنامه
آدرس شروع سگمنت داده ها مي باشد،سگمنت كد حاوي دستورالعملهاي است كه اجرا مي شوند،
IP درحاليكه سگمنت داده ها ، حاوي داده هاي است كه دستورالعملها به آنها مراجعه مي كنند.ثبات
آدرس افست دستورالعمل جاري در سگمنت كد را كه اجرا مي شود ، نشان مي دهد.عملوند يك
دستورالعمل آدرس افستي را كه در سگمنت داده ها به آن مراجعه مي شود، نشان مي دهد.
عملوندهاي دستورالعمل
يكي از ويژگيهاي عملوندهاي دستورالعملهاي براي روشني وگويايي برنامه استفاده از نام هاي
را به صورت Wordx,DW عادي،نام هاي داخل كروش ها واعداد مي باشد در مثال زير دستور
Wordx DW o . يك كلمه ( 2بايت) تعريف مي كند
MOV CX , Wordx منتقل مي كند CX را به Wordx محتوي
MOV CX, انتقال ميدهد 25 CX مقدار 25 را به
MOV CX , DX منتقل مي كند CX را به DX محتوي
MOV CX, [DX] منتقل مي كند CX را به DX محتوي مكان آدرس دهي شدن توسط ثبات
اول ، داده را بين حافظه و يك ثبات انتقال مي دهد. MOV - دستورالعمل
دوم، داده بلاواسطه را به يك ثبات منتقل مي كند. MOV - دستورالعمل
سوم ،داده را بين ثبات منتقل مي كند. MOV - دستورالعمل
چهارم يك عملگرا نويس تعريف مي كند كه به اين صورت MOV - كروش هاي دستورالعمل
DS:DX بصورت DS كه با آدرس سگمنت واقع در ) DX مي باشد: از آدرس افست داخل
CX تركيب مي شود ) براي پيدا كردن كلمه اي در حافظه استفاده مي كرده و محتوي آنرا به
منتقل مي كند.
فصل 4
برنامه نويسي به زبان اسمبلي
يك توضيح با يك كاركتر سميكالن شروع شده وهر جا كه نوشته شود اسمبلر فرض مي كند كه
تمام كاركترهاي سمت راست آن تا انتهاي خط، توضيحات محسوب مي شوند.
چون يك توضيح فقط در ليست يك برنامه اسمبل ظاهر شده وهيچ كد ماشيني را توليد نمي كند
مي توانيد بدون اينكه تاثيري در اندازه برنامه و زمان اجراي آن داشته باشد هر تعداد از توضيحات
را در داخل يك برنامه بگنجانيد.
مي باشد. Comment روش ديگر براي نوشتن توضيحات، استفاده از دستورالعمل
كلمات رزو شده
كه اعمالي مي باشد كه كا مپيوتر مي تواند اجرا كند،دستورات ADD , MOV دستورالعملها مانند
كه براي ارائه اطلاعاتي به اسمبلر مورد استفاده قرار مي گيرند SEGMENT يا END اسمبلر مانند
كه در عبارات مورد استفاده قرار مي گيرند و نمادهاي از پيش تعريف SIZE,FAR عملكردها نظير
كه اطلاعات را به برنامه شما برمي گرداند. در صورتي كه از كلمات Model , Data شده مانند
رزرو شده براي منظورهاي ديگر استفاده شود اسمبلر يك پيغام خطايي را توليد مي كند.
شناسه ها
مي باشند: (label) دو نوع شناسه ها نام و بر چسب
1. نام به آدرس يك داده اشاره مي كند.
در MAIN 2. برچسب ، به آدرس يك دستورالعمل روال يا سگمنت اشاره مي كند، مانند
MAIN PROC FAIR : دستورالعمل زير
قوانين يكساني براي نام ها و بر چسب ها ، مورد استفاده قرار مي گيرد. يك شناسه مي تواند از
كاراكتر هاي زير استفاده كند.
Z تا Q و Z تا A - حروف الفبا
- ارقام 0 تا 9 (نبايد اولين كاراكتر يك رقم باشد.)
- كاراكتر هاي ويژه علامت (؟) خط زيرين (-) علامت ($) كاراكتر(@)
نقطه ( 0) ( نبايد اولين كاراكتر باشد)
(state ments) احكام
يك برنامه اسمبلي داراي مجموعه اي از احكام مي باشد. دو نوع از احكام عبارتند از:
كه اسمبلو آنها را به كد هدف ترجمه مي كند. ADD,MOV 1.دستورالعملهاي مانند
كه به اسمبلر مي گويند كه عمل معيني مانند تعريف يك قلم داده را (directives) 2.دستورات
انجام دهد.
فالب يك حكم در اينجا آمده است كه كروشه ها يك عامل اختياري را نشان مي دهند.
Title,Page دستورات
اسمبلر براي كنترل فرم ليست يك برنامه اسمبل شده به كار مي روند هدف Title,Page دستورات
اين دو دستور همين بوده وهيچ تاثيري روي اجراي بعدي يك برنامه ندارند.
اسمبلر ، تعداد ماكسيمم خطوط براي ليست كردن در Page در ابتداي يك برنامه ، دستور : Page
يك صفحه و ماكسيمم تعداد كاراكترهاي روي يك خط را نشان مي دهد.
Page { شكل كلي: { پهنا} {طول
ممكن است بخواهيد كه درفايل ليست برنامه يك صفحه در خط مشخصي مانند انتهاي يك
را بدون Page سگمنت به اول صفحه بعدي پرش كند براي اين كار در خط مورد نياز دستور
عملوندي را بنويسيد.
اسمبلر استفاده كرده و عنوان يك برنامه را در خط دوم در هر Title مي توانيد از دستور : Title
صفحه از ليست برنامه چاپ كنيد.
اسمبلر SAGMENT دستور
داراي يك يا چند سگمنت مي باشد. يك سگمنت پشته كه EXE يك برنامه اسمبلي در قالب
حافظه پشته را تعريف كرده، يك سگمنت داده ها كه اقلام داده ها را تعريف كرده و........
segments , : دستورات اسمبلري كه براي تعريف يك سگمنت بكار مي روند عبارتند از
و داراي قالب زير مي باشد. ENDS
توضيحات عملوند عمل نام
نام segment و پارامترها Begin segment
نام ENDS و End segment
(align) عملوند يك دستور سگمنت مي تواند داراي سه نوع پارامتر باشد: تنظيم
كه در قالب زير نوشته مي شوند : (class) ورده (combine). تركيب
نام segment "رده" تركيب تنظيم
نوع تنظيم: پرامتر تنظيم مرزي را نشان مي دهد كه سگمنت از آنجا شروع خواهد شد.اگر نوع تنظيم
باشد، سگمنت مزبور روي مرز پراگراف تنظيم مي شود، به اين معني كه آدرس شروع PARA برابر
10 بخش پذير بوده. H آن بر 16 يا
در نظر مي گيرد. para ، اگر از پارامتر تنظيم چشم پوشي كنيد اسمبلر بطور پيش فرض
نوع تركيب: پارامتر تركيب نشان مي دهد كه اين سگمنت را با سگمنت هاي ديگرپس از اسمبل
public , common , stack : شدن در مرحله لينك تركيب كنند.انواع تركيب عبارتند از
براي مثال، سگمنت پشته معمولا به صورت زير تعريف مي شود. AT و عبارت
نام Sgment PARA stack
اگر بخواهيد برنامه هاي اسمبل شده جداگانه رادر موقع لينك كردن، تركيب كنيد مي توانيد
استفاده كنيد،در غير اين صورت، اگر يك برنامه قرار نيست با برنامه هاي common , poblic از
را بنويسيد. none ديگر تركيب شود، بايد اين پارامتر راحذف كرده و يا كلمه
كه در داخل دو آپوستروف ( ) قرار مي گيرد ، برايگروه بندي (calss) نوع رده:پارامتر رده
‘code’ سگمنتهاي مرتبط در هنگام لينك كردن مورد استفاده قرار مي گيرد. اين كتاب از رده هاي
براي ‘stack’ براي سگمنت داده ها و ‘data’ ، ( براي سگمنت كد (توسط ميكروسافت معرفي شده
سگمنت پشته استفاده مي كند.
PROC دستور
سگمنت كه حاوي كد قابل اجراي يك برنامه مي باشد كه از يك يا چند روال تشكيل مي شود كه
تعريف مي شوند. PROC با دستور
ASSVME دستور
براي آدرس دهي سگمنت داده DS براي آدرس دهي پشته ، از ثبات SS از ثبات EXE يك برنامه
براي آدرس دهي سگمنت كد استفاده مي كند. CS ها و از ثبات
در اينجا ، بايد هدف از هر سگمنت برنامه را به اسمبلر اطلاع دهيد. دستور مورد نياز براي اين كار
مي باشد كه در سگمنت كد به صورت زير نوشته مي شود. ASSVME دستور
عملوند عمل
ASSVME ss : و نام پشته DS : و نام سگمنت داده CS: نام سگمنت كد
مرتبط كند ss به اين معني است كه اسمبلر بايد نام سگمنت پشته را با ثبات ss : عملوند نام پشته
وبه روش مشابه براي عملوندهاي نشان داده شده ديگر عمل مي كند. عملوندها مي توانند به هر
به صورت نام سگمنت داده ES مي تواند داراي يك عامل نيز براي ASSVME ترتيبي ظاهر شوند
باشد. ES : ها
استفاده نمي كند،مي توانيد از رجوع به آن صرفنظر كرده ويا عملوند ES اگر برنامه شما از ثبات
را وارد كنيد. ES:nothing
فقط پيغامي است تا اسمبلر در تبديل كد نمادي به كد ASSVME، همانند ساير دستورات اسمبلر
ماشين كمك كند وهنوز ممكن است مجبور باشيد كه دستوراتي را بنويسيد كه بطور فيزيكي
آدرسهايي را در ثباتهاي سگمنت در زمان اجرا قرار دهيد.
END دستور
به يك روال خاتمه مي ENDP به يك سگمنت ودستور ENDS همانطور كه قبلا ذكر شد، دستور
به كل برنامه خاتمه داده وبه عنوان آخرين دستور در يك برنامه ظاهر مي END دهند. يك دستور
شود قالب كلي آن به صورت زير است. عملوند عمل
END [procname]
اگر قرار نيست برنامه اجرا شود، عملوند مي تواند خالي باشد،براي مثال، ممكن است بخواهيد كه
فقط تعارف داده ها را اسمبل كرده و يا ممكن است بخواهيد كه برنامه را با يك ماژول ديگري
معرفي شده به PROC لينك كنيد. در بسياري از برنامه ها اين عملوند شامل نام اولين و يا تنها
مي باشد كه اجراي برنامه قرار است از آنجا شروع شود. FAR صورت
دستورالعملهاي مقدار دهي اوليه يك برنامه
psp را براي اجرا از ديسك به درون حافظه مي خواند يك EXE وقتي بار كننده برنامه يك برنامه
بطول 256 بايت روي مرز پاراگراف در داخل حافظه ساخته وبلافاصله برنامه را به دنبال آن ذخيره
مي كند. سپس بار كننده كارهاي زير را انجام مي دهد:
بار مي كند. CS -آدرس سگمنت كد را در
را در ثباتها. psp بار كرده و آدرس ss -آدرس پشته را در
دستورات ساده شده سگمنت
اسمبلر برخي راههاي ميان بر در تعريف سگمنت ها را ارائه مي دهد. براي استفاده كردن از آنها
بايد قبل تعريف هر سگمنت،مدل حافظه را مقدار دهي كنيد.قالب كلي به صورت زير مي باشد.
.MODEL مدل حافظه
باشد نيازهاي هر مدل عبارتند از: large , compact,medium,small,tiny مدل حافظه مي تواند
تعداد سگمنتهاي داده تعداد سگمنتهاي كد مدل
Tiny * *
small 1 1
medium 1 بيش از 1
compact 1 بيش از 1
Large بيش از 1 بيش از 1
نشده liny مي توانيد از هر يك از اين مدل ها براي برنامه مستقل ( برنامه اي كه به برنامه ديگر
com براي استفاده كردن از برنامه Tiny مدل TASM4,MASM باشد)استفاده كنيد. در اسمبلرهاي 6
كدها small 64 بايت قرار دارند. در مدل k طراحي شده است كه داده ها،كد وپشته دريك سگمنت
model 64 ديگري جا مي گيرند با دستور k 64 و داده ها در يك سگمنت k در داخل يك سگمنت
مورد نياز را توليد مي كند. Assume اسمبلر بطور اتوماتيك دستور
قالب هاي كلي دستوراتي كه سگمنت هاي پشته،داده ها وكد را تعريف مي كنند به صورت زير مي
stack { باشند: {اندازه
Data
code { {نام
Ends مورد نياز و دستور segment هر يك از اين دستورات موجب مي شوند كه اسمبلر دستور
متناظر را توليد كند.نام سگمنت هاي پيش فرض (كه نبايد تعريف كند)عبارتند از:
ضروري مي باشند txet,data براي سگمنت كد).كاراكتر خط زيرين در ابتداي ) text,data,stack
همانطوركه قالب كد گذاري نشان مي دهد،مي توانيدنام پيش فرض سگمنت كد را تغيير دهيد
اندازه پيش فرض پشته برابر 1024 بايت بوده و مي توانيدآنرا صريحا انتخاب كنيد.
استفاده ds دستورالعملهايي كه اكنون براي مقدار دهي اوليه آدرس سگمنت داده ها در داخل ثبات
MOV DS, AX ,MOVS AX , @data مي كنيد عبارتند از
اسمبلر EXIT ,Startup دستورات
.Exit , براي آسان نمودن مقدار دهي اوليه برنامه و خاتمه دادن آن دستورات MASM اسمبلر
دستورالعملهايي را براي مقداردهي اوليهثباتهاي سگمنت .startup. را معرفي كرده است .startup
را براي خارج شدن از INI 21h 4 از ch دستورالعملهاي تابع Exit توليد مي كند در حاليكه دستور
برنامه توليد مي كند.
استفاده مي كند. ExitCode,startup code از اصطلاحات TASM اسمبلر
تعريف داده ها:
تعريف ثابتها،نواحي كاري و EXE همانطور كه بيان شد.هدف سگمنت داده ها در يك برنامه
نواحي ورودي/خروجي مي باشد.اسمبلر اجازه تعريف اقلام داده هابا طولهاي گوناگون را بر حسب
يك كلمه را DW يك بايت و DB، دستورات اسمبلريكه داده ها راتعريف مي كنندمي دهد:براي مثال
تعريف ميكند.يك قلم داده ممكن است داراي يك مقدارتعريف نشده(مقداردهي نشده)بوده ويا
حاوي يك مقدار ثابت باشد.كه بصورت يك رشته كاراكتري يا يك مقدار عددي تعريف شده
[name] Dn expressino . است.قالب كلي داده هابه صورت زير مي باشد
برنامه اي كه به يك قلم داده مراجعه مي كند،اين كار را به وسيله يك نام انجام مي دهد. : name
DW،( بايت ) DB: دستوراتي كه اقلام داده ها را تعريف مي كنند عبارتنداز : ”Dn” دستوراسمبلر
10 بايت) كه هر كدامبه )DT چهار كلمه يا 8 بايت) و )DQ،( كلمه دور )DF،( كلمه مضاعف )DD،( (كلمه
به ترتيب كلمات MASM صورت صريع طول داده تعريف شده را نشان مي دهد. اسمبلر 6
براي دستورالعملها معرفي كرده است. Tword,Qword,Fword,Dword-22/word-Byte
عبارت در يك عملوند ممكن است يك مقداربدون ارزش اوليه يا يك ثابت (expression) عبارت
اوليه باشد براي نشان دادن يك داده بدون مقدار اوليه عملوند را با يك علامت سوال تعريف كنيد.
مثال : FLDA DB ?
يك عبارت ممكن است داراي چند ثابت باشد كه بوسيله كاراكتر كاما(،)از يكديگر جدا شده است
FLDA DB/Byte وفقط به اندازه طول يك خط محدود مي باشد،مثل ........, 21,22,23
معادل مراجعه به اولين FLDA اسمبلر اين ثابت ها را در بايتهاي مجاور تعريف مي كند.مراجعه به
در نظر بگيريد)و FLDA+o ثابت يك بايتي يعني 21 مي باشد (مي توانستيد بايت اول رابه صورت
معادل مراجعه به ثابت دوم يعني 22 مي باشد براي مثال دستورالعمل FLDA+l مراجعه به
MOV AL,FLDA+3
انتقال مي دهد همچنين تكرار ثباتها در يك عبارت در يك قلم به AL 18 ) را به ثبات h) مقدار 24
مجاز مي باشد. name DN تعداد Dup( صورت قلمي (عبارت
1/ DW/word 10 Dup (?)
2/ DB/Byte 5 Dup (12)
3/ DB/Byte 3 Dup (5 Dup 4 )
44444 ) را توليد كرده واين مقدار را سه بار تكرار كرده ومقدار دهي ) مثال سوم پنج كپي از رقم 4
اوليه كند.
رشته هاي كاراكتري:
رشته هاي كاراكتري براي داده هاي توصيفي نظير نام افراد و توصيف محصولات مختلف به كار مي
تعريف شده و يا داخل كوتيشن مضاعف ”PC” رود پشته در داخل كوتيشن هاي تكي نظير
تعريف مي شود اسمبلر رشته هاي گاراكتري را به صورت كد هدف در قالب عادي ”PC” نظير
تنها قالبي (Byte يا ) DB,MASM اسكي و بدونكوتيشن هاي ابتدا وانتها ذخيره مي كند. در اسمبلر
است كه يك رسته كاراكتري با بيش از دو كاراكتررا تعريف كرده وآنها را به ترتيب از چپ به
قالب متعارف براي تعريف داده هاي DB راست ذخيره مي كند(شبيه اسامي و آدرسها)در نتيجه
كاراكتري با هر طولي مي باشديك مثال عبارت است از:
23/ DB , strawberry jam
اگر رشته شامل يك كوتيشن تكي يا كوتيشن مضاعف باشد مي توانيد آنرا به يكي از دو روش زير
DB “crazy sams CD Emporium” . تعريف كنيد
DB Crazy sam “s CD Emporium”
ثابت هاي عددي:
ثلبتهاي عددي براي تعريف مقادير حسابي و آدرسهاي حافظه بكار مي روند.يك ثابت در داخل
در مقدار H كوتيشن قرار نمي گيرد.اما پس از آن مي توان يك مشخص كننده مبنا ذكر نمود مانند
شانزده شانزدهي براي اكثردستورات تعريف داده ها ، اسمبلرثابت هاي عددي تعريف شده را به
مبناي شانزده شانزدهي تبديل كرده و بايت هاي توليد شده را در كد هدف به ترتيب معكوس،از
راست به چپ ذخيره مي كند.
قالب هاي عددي مختلف به شرح زير مي باشند:
استفاده كرد استفاده B دودويي: در قالب دودوي مي توان از ارقام دودويي 1,0 به دنبال آن از حرف
معمولي از قالب دودويي ذكر كردن مقادير براي دستورالعملهاي پردازش كننده بيت ها يعني
مي باشند. Test,xor,OR,AND
استفاده كرد D دهدهي:درقالب دهدهي مي توان از ارقام 0 تا 9 و به دلخواه به دنبال آن از حرف
اسمبلر مقادير دهدهي را به كد هدف دودويي تبديل كرده و آنها را درقالب شانزده شانزدهي نمايش
مي دهد.
استفاده مي شود. H و به دنبال آن از حرف F شانزده شانزدهي:در اين قالب از ارقام 0تا
چون اسمبلرعددي را كه با يك حرف شروع شود برابر نام يك نماد فرض مي كند،لذا رقم اول
يك ثابت شانزده شانزدهي بايستي از 0تا 9 باشد.
اعداد حقيقي:اسمبلر يك مقدار حقيقي داده شده را براي استفاده كردن با يك كمك پردازنده عددي
به قالب مميز شناور تبديل مي كند از تفاوت بين استفاده از كاراكترها وثابت هاي عددي اطمينان
حاصل كنيد.
عملوندهاي دستورالعملها
يك عملوند منبع داده ها براي يك دستورالعمل جهت پردازش مي باشد. برخي از دستورالعملها
به عملوند نيازي ندارند.درحاليكه دستورالعملهاي ديگر داراي يك يا چند RET و CLC مانند
عملوند مي باشد اگر در جايي دو عملوند وجود داشته باشد،عملوند دوم،عملوند منبع مي باشد كه
حاوي داده اي است كه ارسال شده(بلاواسطه)ويا حاوي آدرس (ثبات يا حافظه)داده مورد نظر مي
باشد.عملوند منبع توسط دستورالعمل تغيير داده نمي شود عملوند اول،عملوند مقصد مي باشد كه
حاوي داده مورد نظر در يك ثبات يا حافظه مي باشد كه قرار است پردازش شود قالب
دستورالعملها به صورت زير مي باشد.
[lable:] operation operand 1,operand 2
عملوندهاي ثابت
در اين نوع، ثبات نشان دهنده نام يكي از ثبات هاي 8و 16 يا 32 بيتي مي باشد.بسته به دستورالعمل
ثبات ممكن است در عملوند اول،عملوند دوم ويا در هر دو ظاهر شود.
Worda Dw ? define a word
Mov DX,Worda ,register in first operand
Mov worda . cx ,register in second ... ....
Mov EDX , EBX ,register in both operand
چون پردازش داده ها بين ثباتها هيچ مراجعه اي به حافظه ندارد لذا اين سريعترين نوع عمل است .
عملوندهاي بلا واسطه
در قالب بلاواسطه عملوند دوم حاوي يك مقدار ثابت يا يك عبارت مي باشد(عملوند اول هركز
نبايستي يك مقدار بلاواسطه باشد.)مقصد در عملوند اول طول داده را تعريف مي كند و ممكن
است يك ثبات يا يك مكان حافظه باشد.
Count DB ?
ADD BX,25 ,add 25 to BX
Mov count,50 ,move 50 to count
عملوندهاي مستقيم حافظه
در اين قالب ، يكي از عملوندها به يك مكان حافظه مراجعه كرده و عملوند ديگر به ثبات مراجعه
مي كند(تنها دستورالعملهايي كه هر دو عملوند مي توانند به طور مستقيم حافظه را آدرس دهي كنند
ثبات سگمنت پيش فرض براي آدرس دهي داده ها در ، DC ثبات .( Cmps,movs عبارتنند از
حافظه مي باشد.
Worda DW o ,Define a word
Bytea DB o ,define a Byte
Mov BX, worda
ADD ByteA , DL
Mov CX,DS:[38BOH]
INC ByteA PTR [1BOH]
دو مثال آخر از كروشه براي نشان دادن انديس جهت مراجعه به حافظه استفاده مي كند(يك مقدار
تركيب مي شود)اگر از كروشه استفاده نشود مثلا در DS 38 با آدرس واقع در BOH افست مانند
يك مقدار بلاواسطه را نشان مي دهد. move cx 38 و BOH
1 قرار دارد يك واحد افزايش مي دهد. BOH مثال آخر بايتي از حافظه را كه در آفست
1] فقط يك مكان حافظه را نشان مي دهد لازم است كه از تغيير دهنده BOH] از انجا كه عملوند
براي تعريف طول است<
تبادل لینک هوشمند برای تبادل لینک ابتدا ما را با عنوان سیاست های روز ایران وجهان و آدرس cyac.LoxBlog.ir لینک نمایید سپس مشخصات لینک خود را در زیر نوشته . در صورت وجود لینک ما در سایت شما لینکتان به طور خودکار در سایت ما قرار میگیرد.